<?php
\n 软回车：  \r 软空格：\t 跳格（移至下一列）。
\r\n 一般一起用，用来表示键盘上的回车键，也可只用 \n。
\t表示键盘上的“TAB”键。
/////////////////////////////////////////////	php.ini  配置	/////////////////////////////////////////////////

// ini配置文件     display_errors = Off					关闭错误提示
php函数    // ini_set();      ini_set('display_errors','off');	

  // error_reporting = E_ALL & ~ E_NOTICE				设置应该报告何种 PHP 错误
  php函数 // error_reporting();

///////////////////////////////////////////////	错误处理	///////////////////////////////////////////////////////////////
trigger_error — 产生一个用户级别的 error/warning/notice 信息
    function connect(){
        $link = @mysql_connect('localhost','root','1234567');
        if(!$link){
            trigger_error('数据库连接失败',E_USER_WARNING);	//E_USER_WARNING	E_USER_ERROR		E_USER_NOTICE
        }
    }

    connect();

----------------------set_error_handler — 用户定义的错误处理函数------------------------------------------------	
	mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
									回调函数					错误类型【可选】

	 会调函数  handler	( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] )
					级别		信息			文件名			行号

	error_log — 发送错误信息到某个地方
	error_log('应该被记录的错误信息。 ',3,'路径');

    set_error_handler('myerror');		
    function myerror($level,$message,$file,$line){
        $str = date('Y-m-d H:i:s')."\r\n";
        $str .=  '错误级别：'.$level."\r\n";
        $str.= '错误信息：'.$message."\r\n";
        $str.= '错误文件：'.$file."\r\n";
        $str.= '错误行号：'.$line."\r\n";
        error_log($str,3,'./error.log');		//没有文件就创建
    }

    in_array();
------------------------------  使用日志记录错误（全部错误，不能自己设置）-------------------------------------------------------
  
    ini_set('display_errors',0);        //关闭错误显示   不显示到浏览器上面
    ini_set('log_errors',1);			//开启错误日志记录
    ini_set('error_log','./log.log');		//发送错误信息到某个文件		没有文件就创建

    foreach($a as $val){}

////////////////////////////////	异常处理	Exception	(Exception是所有异常的基类。 //////////////////////////////

Exception	的类
Exception {
/* 属性 */
protected string $message ;		//异常消息内容
protected int $code ;				//异常代码
protected string $file ;				//抛出异常的文件名
protected int $line ;					//抛出异常在该文件中的行号
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )					— 获取异常消息内容
final public Exception getPrevious ( void )				—返回异常链中的前一个异常
final public int getCode ( void )							— 获取异常代码
final public string getFile ( void )						— 获取发生异常的程序文件名称
final public int getLine ( void )							— 获取发生异常的代码在文件中的行号
final public array getTrace ( void )						— 获取异常追踪信息
final public string getTraceAsString ( void )				— 获取字符串类型的异常追踪信息
public string __toString ( void )							— 将异常对象转换为字符串
final private void __clone ( void )						— 异常克隆
}
-----------------------------------------------------------------------------------------------------------------
实例一：
	$es = new Exception('参数不合法');			//实例化，
	try{											//试运行
		throw $es;								//抛出异常
	}catch(Exception $a){						//catch 接受异常		Exception 类型限制		$a   接收到的异常
		echo $a->getMessage();				//输出接收到的异常消息内容
	}
-----------------------------------------------------------------------------------------------------------------
实例二：
	class A extends Exception{}
	class B extends Exception{}

	try{
		throw new A('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
	}catch(A $a){
		echo $a->getMessage();
	}
	echo '<hr>';
	try{
		throw new B('bbbbbbbbbbbbbbbbbbbbbbbbb');
	}catch(B $b){
		echo $b->getMessage();
	}
-----------------------------------------------------------------------------------------------------------------
实例三：

    class DBException extends Exception{
        public function __toString(){
            return $this->message;
        }
    }

    class HTMLException extends Exception{
        public function __toString(){
            return $this->message;
        }
    }

    try{
        //throw new DBException('数据库连接失败');
        throw new HTMLException('你访问的页面不存在');
    }catch(DBException $ex){
        echo '系统错误';
        //偷偷的记录系统日志
    }catch(HTMLException $ex){
        echo '你访问的页面不存在';
    }catch(Exception $e){
        //默认操作
    }

 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////